package com.wmh.baseservice.robot.service;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wmh.baseservice.robot.entity.RobotInfo;
import com.wmh.baseservice.robot.pojo.vo.PushTaskReqVO;
import com.wmh.baseservice.robot.pojo.vo.RegRobotReqVO;
import com.wmh.baseservice.robot.pojo.vo.RobotUpdateStatusReqVO;

import java.util.List;

/**
* @author 20402
* @description 针对表【robot_info(机器信息表)】的数据库操作Service
* @createDate 2022-11-07 17:35:46
*/
public interface RobotInfoService extends IService<RobotInfo> {

    /**
     * 远程电脑注册至服务器
     * @param reqVO 请求对象
     * @return 机器唯一ID
     * */
    String reg(RegRobotReqVO reqVO);

    /**
     * 暂停远程电脑任务
     * @param robotNumber 机器编号
     * */
    void stopTask(Long robotNumber);

    /**
     * 对远程电脑发布任务
     * @param pushTaskReqVo 发布任务所需请求体
     * */
    void pushTask(PushTaskReqVO pushTaskReqVo);

    /**
     * 自动选择 闲置 机器发布任务
     * @param uriName
     * @param params
     */
    void autoPushTask(String uriName, JSONObject params);

    /**
     * 修改机器状态
     * @param reqVO 请求对象
     * */
    void updateStatus(RobotUpdateStatusReqVO reqVO);


    /**
     * 更新机器状态 v2 版本
     * @param reqVO 请求对象
     * */
    void updateStatusV2(RobotUpdateStatusReqVO reqVO);

    /**
     * 获取机器日志
     * @param robotNumber 机器编号
     * @return 日志内容
     * */
    String getRobotLog(Long robotNumber);

    /**
     *  获取机器截图
     * @param robotNumber 机器编号
     * @return base64 编码字符串
     * */
    String getScreenshots(Long robotNumber);

    /**
     * 注销机器
     * @param robotNumber 机器编号
     * */
    void logout(Long robotNumber);

    /**
     * 设置机器为掉线状态
     * @param robotNumber 机器编号
     * */
    void setRobotToStatusDrops(Long robotNumber);

    /**
     * 获取机器信息
     * @param robotStatus 状态
     * @return 该状态下的机器
     */
    List<RobotInfo> getRobotInfo(Integer robotStatus);
}
